//package com.dongzili.postgresql.common.mybatisplus.postgresql;
//
//import net.sf.jsqlparser.JSQLParserException;
//import net.sf.jsqlparser.parser.CCJSqlParserUtil;
//import net.sf.jsqlparser.schema.Table;
//import net.sf.jsqlparser.statement.Statement;
//import net.sf.jsqlparser.statement.StatementVisitorAdapter;
//import net.sf.jsqlparser.statement.select.FromItem;
//import net.sf.jsqlparser.statement.select.PlainSelect;
//import net.sf.jsqlparser.statement.select.Select;
//import net.sf.jsqlparser.statement.select.SelectVisitorAdapter;
//import org.springframework.stereotype.Component;
//
//
//@Component
//public class PostgresSqlProcessor {
//
//
//    // 使用JSqlParser进行SQL解析
//    public String processSql(String sql) {
//        try {
//            Statement statement = CCJSqlParserUtil.parse(sql);
//            statement.accept(new StatementVisitorAdapter() {
//                @Override
//                public void visit(Select select) {
//                    select.getSelectBody().accept(new SelectVisitorAdapter() {
//                        @Override
//                        public void visit(PlainSelect plainSelect) {
//                            processPlainSelect(plainSelect);
//                        }
//                    });
//                }
//            });
//
//            return statement.toString();
//        } catch (JSQLParserException e) {
//            // 解析失败时使用正则表达式降级处理
//            return fallbackProcess(sql);
//        }
//    }
//
//    private void processPlainSelect(PlainSelect select) {
//        // 处理表名
//        if (select.getFromItem() != null) {
//            processFromItem(select.getFromItem());
//        }
//
//        // 处理字段
//        if (select.getSelectItems() != null) {
//            select.getSelectItems().forEach(this::processSelectItem);
//        }
//
//        // 处理where条件
//        if (select.getWhere() != null) {
//            processExpression(select.getWhere());
//        }
//    }
//
//    private void processFromItem(FromItem fromItem) {
//        if (fromItem instanceof Table) {
//            Table table = (Table) fromItem;
//            String tableName = table.getName();
////            if (keywordDetector.isReservedWord(tableName)) {
////                table.setName("\"" + tableName + "\"");
////            }
//        }
//    }
//
//    private String fallbackProcess(String sql) {
//        // 使用正则表达式进行保守处理
//        return sql.replace("`", "\"");
//    }
//}